package com.wanger.swa.service.ise;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wanger.swa.dto.template.query.TemplateQuery;
import com.wanger.swa.dto.template.req.TemplateAddReq;
import com.wanger.swa.dto.template.req.TemplateUpdateContentReq;
import com.wanger.swa.dto.template.req.TemplateUpdatePidReq;
import com.wanger.swa.dto.template.req.TemplateUpdateReq;
import com.wanger.swa.dto.template.resp.TemplateResp;
import com.wanger.swa.domain.po.TemplatePO;
import com.wanger.swa.dto.template.resp.TemplateTreeResp;
import com.wanger.swa.dto.template.resp.tips.systemTool.SysToolInfo;
import com.wanger.swa.dto.template.resp.tips.fileInfo.FileInfoResp;
import org.springframework.web.multipart.MultipartFile;

import java.io.OutputStream;
import java.util.Collection;
import java.util.List;

/**
 * @Author: wanger
 * @Date: 2024/9/15 17:25
 * @Description: 模板
 */
public interface TemplateService extends IService<TemplatePO> {

    TemplateResp addTemplate(TemplateAddReq addDTO);

    TemplateResp updateTemplate(TemplateUpdateReq updateDTO);

    TemplateResp getOneTemplate(String id);

    String getTemplateContentById(String id);

    IPage<TemplateResp> pageTemplate(TemplateQuery query);

    List<TemplateResp> listTemplate(TemplateQuery query);

    void deleteTemplate(String id);

    void queryAndDelete(String pid);

    List<TemplateTreeResp> getTree(String pid);

    TemplateTreeResp buildTemplateTree(TemplateResp template, boolean viewTree);

    boolean updateTemplateContent(TemplateUpdateContentReq updateDTO);

    Object tipsDataInfo(String databaseId);

    FileInfoResp tipsFileInfo(String templateId);

    Collection<SysToolInfo> tipsSystemTool();

    void exportTemplate(String id, OutputStream out);

    boolean importTemplate(String id, MultipartFile file);

    void saveTree(String pid, TemplateTreeResp tree);

    boolean updatePid(TemplateUpdatePidReq req);
}
